const KoaRouter = require('@koa/router');
const { verifyAuth } = require('../middleware/login.middleware');
const { create, getList, detail, update, remove, addLabels } = require('../controller/moment.controller');
const { verifyMomentPermission, verifyPermission } = require('../middleware/permission.middleware');
const { verifyLabelExists } = require('../middleware/label.middleware');


// 1. 创建login路由
const momentRouter = new KoaRouter({ prefix: '/moment' });
// 编写接口
// 1. 增：新增动态
momentRouter.post('/', verifyAuth, create);
// 2. 查：获取moment
momentRouter.get('/', getList)
// 获取某一个动态详情
momentRouter.get('/:momentId', detail)
// 3. 改：修改动态
// // 修改moment的content，首先要验证是否登录 是否有权限
// momentRouter.patch('/:momentId', verifyAuth, verifyMomentPermission, update);
// // 4. 删：删除动态
// momentRouter.delete('/:momentId', verifyAuth, verifyMomentPermission, remove)

// 3. 改：修改动态
// // 修改moment的content，首先要验证是否登录 是否有权限
momentRouter.patch('/:momentId', verifyAuth, verifyPermission, update);
// // 4. 删：删除动态
momentRouter.delete('/:momentId', verifyAuth, verifyPermission, remove);

// 5. 给动态添加标签
/**
 * 1. 验证是否登录
 * 2. 验证是否有操作这个动态的权限
 * 3. 额外中间件：验证label的name是否在数据库表中已经存在
 *      如果存在，那么直接使用即可
 *      如果不存在，那么需要先创建label的name添加到数据库表label中
 * 4. 最后：
 *     所有的labels都存在在label表中
 *     将动态和label的关系，添加到表 moment_label关系表中
 */

momentRouter.post('/:momentId/labels', verifyAuth, verifyPermission, verifyLabelExists, addLabels)

module.exports = momentRouter